#ifndef _FUNCTION_H_
#define _FUNCTION_H_

#include "Global.h"

#define _MODULE_N5_     0
#define _MODULE_N5S_    1    

#define _MODULE_SEL_    _MODULE_N5S_

enum
{
    KF_CMD_NULL             = 0xFF,
    KF_CMD_YIDONG           = 0x10,     // 移动
    KF_CMD_DACHONG          = 0x01,     // 大冲
    KF_CMD_XIAOCHONG        = 0x02,     // 小冲
    KF_CMD_TUNXI            = 0x0D,     // 臀洗
    KF_CMD_FUXI             = 0x0E,     // 妇洗
    KF_CMD_SHUIWEN          = 0x15,     // 水温
    KF_CMD_NUANFENG         = 0x17,     // 暖风
    KF_CMD_FENGWEN          = 0x18,     // 风温
    KF_CMD_ZUOWEN           = 0x16,     // 座温
    KF_CMD_WEIZHI_JIA       = 0x0F,     // 位置+
    KF_CMD_WEIZHI_JIAN      = 0x0F,     // 位置-
    KF_CMD_YEDENG           = 0x1F,     // 夜灯
    KF_CMD_TINGZHI          = 0x00,     // 停止
    KF_CMD_PAIR             = 0xD2,     // 配对
    KF_CMD_SHUIYA_JIA       = 0x19,     // 水压+
    KF_CMD_SHUIYA_JIAN      = 0x19,     // 水压-
    KF_CMD_JIAOGAN          = 0x2A,     // 脚感冲水【停止+座温】
    KF_CMD_RUNCI            = 0x2B,     // 润瓷功能【水温减+大冲】
    KF_CMD_ZIDONGCHONGSHUI  = 0x22,     // 自动冲水【停止+大冲】
    KF_CMD_JIENENG          = 0x26,     // 节能模式
    KF_CMD_JINGXI           = 0x0B,     // 劲洗-带水压
    KF_CMD_FANGAI           = 0x04,     // 翻盖
    KF_CMD_FANQUAN          = 0x05,     // 翻圈
    KF_CMD_GUANGAI          = 0x06,     // 关盖
    KF_CMD_ZUOWEN_JIA       = 0x16,     // 座温+   
    KF_CMD_ZUOWEN_JIAN      = 0x16,     // 座温-
    KF_CMD_SHUIWEN_JIA      = 0x15,     // 水温+
    KF_CMD_SHUIWEN_JIAN     = 0x15,     // 水温-
    KF_CMD_HENGJINGCHUJUN   = 0x0A,     // 恒净除菌
    KF_CMD_SHOUDONG_GUANGGAN= 0x25,     // 手动/光感切换【长按夜灯】
    KF_CMD_DIANJIESHUI      = 0x24,     // 电解水【妇洗+停止】
    KF_CMD_CHUCHOU          = 0x27,     // 除臭【水温减+风温】
    KF_CMD_FENGMINGQI       = 0x28,     // 蜂鸣器【水温+停止】
    KF_CMD_PENTOUQINGXI     = 0x29,     // 喷头清洗【位置上+停止】
    KF_CMD_DUJIAMOSHI       = 0x2C,     // 度假模式【移动+停止】
    KF_CMD_GUANGAICHONGSHUI = 0x2D,     // 关盖冲水【关盖+冲水】
    KF_CMD_YANSHIMOSHI      = 0xB0,     // 演示模式【臀洗+停止】
    KF_CMD_ZIDONGGUANGAI    = 0x20,     // 自动关盖【长按关盖】
};

enum
{
    KF_NULL = 0,
    KF_YIDONG,
    KF_DACHONG,
    KF_XIAOCHONG,
    KF_TUNXI,
    KF_FUXI,
    KF_SHUIWEN,
    KF_NUANFENG,
    KF_FENGWEN,
    KF_ZUOWEN,
    KF_WEIZHI_JIA,
    KF_WEIZHI_JIAN,
    KF_YEDENG,
    KF_TINGZHI,
    KF_PAIR,
    KF_SHUIYA_JIA,
    KF_SHUIYA_JIAN,
    KF_JIAOGAN,
    KF_RUNCI,
    KF_ZIDONGCHONGSHUI,
    KF_JIENENG,
    KF_JINGXI,
    KF_FANGAI,
    KF_FANQUAN,
    KF_GUANGAI,
    KF_ZUOWEN_JIA,
    KF_ZUOWEN_JIAN,
    KF_SHUIWEN_JIA,
    KF_SHUIWEN_JIAN,
    KF_HENGJINGCHUJUN,
    KF_SHOUDONG_GUANGGAN,
    KF_DIANJIESHUI,         // 电解水【妇洗+停止】
    KF_CHUCHOU,             // 除臭【水温减+风温】
    KF_FENGMINGQI,          // 蜂鸣器【水温+停止】
    KF_PENTOUQINGXI,        // 喷头清洗【位置上+停止】<固定1>
    KF_DUJIAMOSHI,          // 度假模式【移动+停止】
    KF_GUANGAICHONGSHUI,    // 关盖冲水【关盖+冲水】
    KF_YANSHIMOSHI,         // 演示模式
    KF_ZIDONGGUANGAI,       // 自动关盖【长按关盖】
};

enum
{
    DISP_OFF=0,
    DISP_SHUIWEN=1,
    DISP_FENGWEN=2,
    DISP_ZUOWEN=3,
    DISP_WEIZHI=4,
    DISP_SHUIYA=5,
    DISP_PAIR,
}

typedef struct 
{
    uint8 ShuiYa;
    uint8 ShuiWen;
    uint8 FengWen;
    uint8 ZuoWen;
    uint8 WeiZhi;

    uint8 YiDong:1;         // 移动
    uint8 YeDeng:1;         // 夜灯
    uint8 JiaoGan:1;        // 脚感
    uint8 RunCi:1;          // 润瓷
    uint8 ZiDongChongShui:1;// 自动冲水        
    uint8 JieNeng:1;        // 节能
    uint8 ShouDong:1;       // 手动/光感切换夜灯
    uint8 DianJieShui:1;    // 电解水

    uint8 ChuChou:1;        // 除臭
    uint8 FengMingQi:1;     // 蜂鸣器
    uint8 DuJiaMoShi:1;     // 度假模式
    uint8 GuanGaiChongShui:1;// 关盖冲水
    uint8 ZiDongGuanGai:1;  // 自动关盖
    uint8 Reversed:3;
}Typedef_RemoterPara;

extern Typedef_RemoterPara RemoterCtrl;
extern const uint8 TAB_KEY_CMD[];

typedef struct 
{
    Typedef_RemoterPara ParaData;
    uint8 CheckSum;
}Typedef_PARA_SAVE;


#define C_DEFAULT_FENGWEN   0x03
#define C_DEFAULT_SHUIWEN   0x03
#define C_DEFAULT_ZUOWEN    0x03
#define C_DEFAULT_SHUIYA    0x01
#define C_DEFAULT_WEIZHI    0x01

#define C_DISP_TIME_SET     5000
#define TM_LED_POWER_ON     5000

#define EEP_ADDR_PARA       0x10
#define INIT_CS             'W'+'A'+'Z'

void DoKey(void);
void initFunction(void);
void Key_FunctionX(uint8 key);
void SwitchDisplay(uint8 disp);

void EEP_Save(void);
void EEP_Load(void);

#endif

